package com.aspose.cells;

class zhq extends zk {
   private int d;
   private int e;
   private boolean f;

   public zhq(zhh var1, String var2) {
      super(var1, var2);
   }

   protected double c(double var1) {
      if (var1 == 0.0D) {
         return 0.0D;
      } else {
         boolean var3 = false;
         if (var1 < 0.0D) {
            var3 = true;
            var1 = -var1;
         }

         int var4 = (int)Math.floor(Math.log10(var1));
         double var5 = Math.pow(10.0D, (double)var4);
         var1 /= var5;
         var1 += 5.0E-15D;
         var1 = com.aspose.cells.a.c.zm.b(var1, this.e);
         var1 *= var5;
         return var3 ? -var1 : var1;
      }
   }

   protected char[] a(char[] var1, int[] var2, int[] var3) {
      var2[1] = -1;

      for(int var4 = 0; var4 < var1.length; ++var4) {
         if (var1[var4] == this.c()) {
            var2[1] = var4;
            var3[1] = 1;
         } else if (var1[var4] == 'e' || var1[var4] == 'E') {
            if (var2[1] < 0) {
               var2[1] = var4;
               var3[1] = 0;
            }

            var2[2] = var4;
            if (var4 + 1 < var1.length) {
               if (var1[var4 + 1] != '-' && var1[var4 + 1] != '+') {
                  if (this.f) {
                     char[] var5 = new char[var1.length + 1];
                     System.arraycopy(var1, 0, var5, 0, var4 + 1);
                     var5[var4 + 1] = '+';
                     System.arraycopy(var1, var4 + 1, var5, var4 + 2, var1.length - var4 - 1);
                     var1 = var5;
                     var3[2] = 2;
                     var2[3] = var5.length;
                  } else {
                     var3[2] = 1;
                  }
               } else {
                  var3[2] = 2;
               }
            }

            return var1;
         }
      }

      if (var2[1] < 0) {
         var2[1] = var1.length;
         var3[1] = 0;
      }

      var2[2] = var1.length;
      var3[2] = 0;
      return var1;
   }

   protected void a(char[] var1, int var2, int var3, zlv var4) {
      this.f = true;
      this.e = this.c.b();
      this.c.b(-1);
      this.c.c(-1);

      while(true) {
         while(true) {
            label68:
            while(var2 < var3) {
               switch(var1[var2]) {
               case 'E':
               case 'e':
                  if (this.c.d() < 0) {
                     if (this.c.c() < 0) {
                        this.d = var4.c().length();
                        var4.a(true, this.d);
                        var4.a(true, this.d);
                     } else {
                        this.d = this.c.c();
                        var4.a(false, this.c.c() + 1);
                     }

                     this.c.c(var4.c().length());
                     var4.c().append('E');
                     boolean var5 = false;
                     boolean var6 = true;
                     ++var2;

                     while(true) {
                        while(true) {
                           if (var2 >= var3) {
                              continue label68;
                           }

                           switch(var1[var2]) {
                           case '#':
                              var4.a();
                              var4.c().append((char)(var5 ? '0' : '#'));
                              break;
                           case '+':
                              if (!var6) {
                                 var2 = this.b(var1, var2, var3, var4);
                                 continue;
                              }

                              var6 = false;
                              break;
                           case '-':
                              if (!var6) {
                                 var2 = this.b(var1, var2, var3, var4);
                                 continue;
                              }

                              var6 = false;
                              this.f = false;
                              break;
                           case '.':
                              var4.b().append(this.c());
                              ++var2;

                              while(var2 < var3) {
                                 if (var1[var2] == '#') {
                                    ++var2;
                                 } else {
                                    var2 = this.b(var1, var2, var3, var4.b());
                                 }
                              }
                              continue;
                           case '0':
                              var4.a();
                              var5 = true;
                              var4.c().append('0');
                              break;
                           case '?':
                              var4.a(false);
                              var4.a();
                              var4.c().append((char)(var5 ? '0' : '#'));
                              break;
                           default:
                              var2 = this.b(var1, var2, var3, var4);
                              continue;
                           }

                           ++var2;
                        }
                     }
                  }

                  var4.b().append(var1[var2]);
                  ++var2;
                  break;
               default:
                  var2 = this.b(var1, var2, var3, var4);
               }
            }

            var4.a(true, var4.c().length());

            for(int var7 = var4.c().length() - 1; var7 > this.c.d(); --var7) {
               if (var4.c().charAt(var7) == '#') {
                  var4.c().delete(var7, var7 + 1);
               }
            }

            if (this.c.d() + 1 == var4.c().length()) {
               var4.c().append('0');
            }

            return;
         }
      }
   }

   public int a() {
      return 5;
   }

   public int g() {
      return 6;
   }
}
